# coding:utf-8

import json
from django.shortcuts import render
from .self_class.recognition import Recognition
from .self_class.login import LoginManager


class user:
    # 用户状态, 0:未登陆， 1 登陆
    userStatu = 0

    # 用户名
    username = ''

    # # 标志：0，提示条为红色， 1 ，提示条为绿色
    # flag = 0
    #
    def setUserStatu(self, statu):
        self.userStatu = statu

    def getUserStatu(self):
        return self.userStatu

    def setUserName(self, name):
        self.username = name

    def getUserName(self):
        return LoginManager.username

user = user()


def login(request):
    flag = 0
    message = ''
    if request.method == 'GET':  # 请求是GET请求(即初始访问页面的时候)
        return render(request, "login.html", {"message": ""})  # 返回到渲染的html页面

    if request.method == 'POST':  # 是提交表单了的POST请求，就获取用户在页面输入的账号和密码点击登录时调用的
        # 获取到在页面输入的用户名和密码
        username = request.POST.get('username')
        password = request.POST.get('password')

        login_manager = LoginManager()  # 生成一个登陆管理类的对象
        if login_manager.login(username, password):
            # 如果用户名和密码匹配成功
            LoginManager.username = login_manager.user_dict[username][1]
            user.setUserName(username)
            user.setUserStatu(1)

            message = '恭喜' + username + '登录成功！即将跳转到主界面！'
            flag = 1
        else:
            message = '密码输入错误或用户名不存在!'
            flag = 0
            user.setUserName('')
            user.setUserStatu(0)

    # 这个字典用于返回到页面所用的参数信息
    loginResult = {'flag': flag, 'message': message, 'username': user.getUserName(), 'userStatu': user.getUserStatu()}
    return render(request, "login.html", {'loginResult': json.dumps(loginResult)})


def register(request):
    flag = 0
    message = ''

    if request.method == 'GET':  # 请求是GET请求(即初始访问页面的时候)
        return render(request, "register.html", {"message": json.dumps("")})  # 返回到渲染的html页面
    if request.method == 'POST':  # 是提交表单了的POST请求，就获取用户在页面输入的账号、邮箱和密码点击注册按钮时调用的
        # 获取到在页面输入的用户名、邮箱和密码
        username = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        if username is not "" and password is not "" and email is not "":  # 如果输入都不为空的话
            LoginManager().register(username, email, password)  # 调用注册方法
            flag = 1
            message = '注册成功！即将跳转到登录界面...'
        else:
            flag = 0
            message = '注册失败，用户名密码和邮箱不能为空！'

    result = {'flag': flag, 'message': message}  # 这个字典用于返回到页面所用的参数信息
    return render(request, "register.html", {'result': json.dumps(result)})


def textMining(request):
    # 初始化参数变量，其中flag=-1表示该状态只是访问页面，并未提交表单
    url, flag, message = "", -1, ""

    # 可爬虫的网站列表
    legal_url = ["https://www.yidaiyilu.gov.cn", "http://www.ebrun.com"]

    # 初始词云图片的路径
    wordcloud_path = '../static/image/word.png'
    # 初始的文章主要内容
    summary_list = ["（请输入您要获取信息的网址！！！）"]
    if request.method == 'POST':  # 用户输入了地址并点击了查询
        url = request.POST.get('url')  # 获取到用户输入的url
        url_split = url.split("/")  # 将获取的url字符串通过"/"进行切分
        # 遍历每一个legal_url，和用户输入的url进行比对，如果是三个网站其中的任一网站的文章，就进行爬虫处理
        if len(url_split) > 2 and True in [i.__eq__(url_split[0]+"//"+url_split[2])for i in legal_url]:
            re = Recognition(url)  # 定义一个类的对象
            wordcloud_path = re.get_wordcloud()  # 获取词云照片的路径
            summary_list = re.get_summary(6)  # 获取6条文章的主要内容信息
            flag, message = 1, "查询成功"
        else:
            flag, message = 0, "查询失败，请输入正确的网址"
    print(wordcloud_path)
        # 将参数返回到页面
    return render(request, "textMining.html", {"flag": json.dumps(flag),
                                               "message": json.dumps(message),
                                               "url": json.dumps(url),
                                               "wordcloud": wordcloud_path,
                                               "summary": summary_list,
                                               "username": json.dumps(LoginManager.username)})


def dataAnalysis(request):
    result = {'userstatu': user.getUserStatu(), 'username':user.getUserName()}
    return render(request, "dataAnalysis.html", {'result': json.dumps(result)})


def index(request):
    if request.method == 'POST':
        close = request.POST.get('close')

        # 设置用户状态为未登陆
        user.setUserStatu(0)

        print(close)

    result = {'userstatu': user.getUserStatu(), 'username':user.getUserName()}
    return render(request, "index.html", {'result': json.dumps(result)})

def projectDesc(request):
    result = {'userstatu': user.getUserStatu(), 'username': user.getUserName()}
    return render(request, "projectDesc.html", {'result': json.dumps(result)})


def selfCenter(request):
    result = {'userstatu': user.getUserStatu(), 'username': user.getUserName()}

    return render(request, "selfCenter.html", {'result': json.dumps(result)})


def tech(request):
    result = {'userstatu': user.getUserStatu(), 'username': user.getUserName()}
    return render(request, "tech.html", {'result': json.dumps(result)})

